with v8.Class_Object, v8.Class_Value, v8.Class_String;
package v8.Class_String_Object is
   type String_Object (<>) is new v8.Class_Object.Object with private;
   type Pointer is access all String_Object;
   -- A String object (ECMA-262, 4.3.18).

   function Create (value : v8.Class_String.Pointer) return Pointer;

   function String_Value (this : String_Object) return v8.Class_String.Pointer;
   --Returns the String held by the object.

   function Cast is new Ada.Unchecked_Conversion (v8.Class_Value.Pointer, Pointer);
   -- Convert Value to String_Object

private
   type String_Object is new v8.Class_Object.Object with null record;


   pragma Import (CPP, Create, "_ZN2v812StringObject3NewENS_6HandleINS_6StringEEE");
   pragma Import (CPP, String_Value, "_ZNK2v812StringObject11StringValueEv");
end v8.Class_String_Object;
